/* 
接口  
鸭子概念

接口 用来描述一个非常相似的对象 数组 函数类型 
*/

// 定义一个接口   首字母大写
interface People {
  name: string;
  // readonly  表示只读
 readonly age: number;
  sex: boolean;
  phone: number;
}

let p1: People = {
  name: "张三",
  age: 19,
  sex: true,
  phone: 110,
};

let p2: People = {
  name: "李四",
  age: 20,
  sex: false,
  phone: 180,
};

console.log(p2.age);

interface Info{
    content:string
}

interface Shop{
    name:string,
    price:number,
    info:Info,
    like:(a:string,b:number)=>void;
    say:()=>number;
    slider:Array<string>
}


let Computer:Shop={

    name:'拯救者',
    price:1267,
    info:{
        content:'下手机卡号了解客户'
    },
    like(a,b){
        console.log('like');
        
    },
    say:function(){
        return 1000
    },
    slider:['32','12']
}


/* 
使用接口定义任意类型  对象
*/

interface Respones{
    [key:string]:any
}
let res :Respones = {
    name:'5614562',
    age:1223,
    list:[1,2.3,4,2],
    say(){
        return 1213
    }
}

// let obj={
//     name:'张三'
// }
// obj.name
// obj['name']

console.log([1,2,3,4]);
//使用接口 定义任意数组

interface Arr{
    [index:number]:any
}

let ar:Arr=[122,33,45,'13',{name:'张三'},[12,3,2]]

// 使用接口定义函数
interface Myfun{
    (a:string,b:number):number
}
let fun1:Myfun = (a,b)=>{
    return a.length+b
}

fun1('123',12)